#pragma once
#include <iostream>
#include <string>
#include <functional>
#include "log.hpp"

// typedef function<void(int,const std::string&,const std::string&)> func_t;
using func_t = std::function<void(int,const std::string&,const std::string&)>;

class Task
{
public:
    Task()//无参构造
    {}

    Task(int sock,std::string ip,uint16_t port,func_t func):_sock(sock),_ip(ip),_port(port),_func(func)//带参构造
    {}

    void operator()(const std::string &name)//仿函数，构造时可以直接调用
    {
        _func(_sock,_ip,_port);
    }        
public:
    int _sock;
    std::string _ip;
    uint16_t _port;
    
    //int type;//任务类型
    func_t _func;//任务方法
};